package com.ywy.search.model;

import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;

import java.io.Serializable;
import java.util.Date;

/**
 * 文章搜索结果
 *
 * @author ywy
 * @date 2021/12/30 13:53
 */
@Data
@Document(indexName = "post", type = "post", createIndex = true)
public class PostDocument implements Serializable {
    @Id
    private Integer id;

    /**
     * 标题
     * FieldType.Text表示是文本，需要经过分词；FieldType.Keyword需要完全匹配
     * 索引分词用的是ik_max_word
     * 搜索分词用的是ik_smart
     * ik_max_word 会做最粗粒度的拆分
     * ik_smart 会做最粗粒度的拆分
     */
    @Field(type = FieldType.Text, analyzer = "ik_max_word", searchAnalyzer = "ik_smart")
    private String title;

    /**
     * 作者id
     */
    @Field(type = FieldType.Integer)
    private Integer authorId;

    /**
     * 作者名称
     */
    @Field(type = FieldType.Keyword)
    private String authorName;

    /**
     * 作者vip等级
     */
    private String authorVip;

    /**
     * 作者头像
     */
    private String authorAvatar;

    /**
     * 分类id
     */
    private Integer categoryId;

    /**
     * 分类名称
     */
    @Field(type = FieldType.Keyword)
    private String categoryName;

    /**
     * 访问数量
     */
    private Integer viewCount;

    /**
     * 评论数量
     */
    private Integer commentCount;

    /**
     * 是否为推荐
     */
    private Boolean recommend;

    /**
     * 置顶等级
     */
    private Integer level;

    @Field(type = FieldType.Date)
    private Date createTime;
}
